#include <fstream>
#include <sstream>
#include <iostream>
#ifndef MEMBER_H
#define MEMBER_H

class Member{
    public:
        // CONSTRUCTORS
        virtual ~Member() {}

        // OPERATORS
        friend std::ifstream& operator>>(std::ifstream&, Member&);
        friend std::stringstream& operator>>(std::stringstream&, Member&);
        friend bool operator==(const Member&, const Member&);
        friend bool operator>(const Member&, const Member&);
        friend bool operator<(const Member&, const Member&);

        // SET
        void setName(const std::string &a) { name = a; }
        void setAddress(const std::string &a) { address = a; }
        void setId(const std::string &a) { id = a; }
        void setAvailability(const std::string &a) { availability = a; }
        void setBalance(const int &a) { balance += a; }

        // GET
        std::string getName() const { return name; }
        std::string getAddress() const { return address; }
        std::string getId() const { return id; }
        std::string getAvailability() const { return availability; }
        int getBalance() const { return balance; }

        virtual int rentCostCalc() const { return rentCost; }
        virtual int delayCostCalc() const { return delayCost; }
        virtual int rentTimeCalc() const { return rentTime; }

    protected:
        std::string name;
        std::string address;
        std::string id;
        std::string availability;
        int balance;

        static int rentCost;
        static int delayCost;
        static int rentTime;
};

#endif // MEMBER_H
